#pragma once

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>


typedef int Qdatatype;

typedef struct Queuenode
{
	struct Queuenode* next;
	Qdatatype val;

}Qnode;

typedef struct Queue
{
	Qnode* head;
	Qnode* tail;
	int size;
}Queue;


void QInit(struct Queue* q);
void QDestroy(struct Queue* q);
void Qpop(struct Queue* q);
void Qpush(struct Queue* q, Qdatatype x);
int Qsize(struct Queue* q);
Qdatatype Qfront(struct Queue* q);
Qdatatype Qback(struct Queue* q);
bool Qempty(struct Queue* q);